module SPREST {
    class Constants {
        static ContextInfoUrl: string;
        static SiteApiUrl: string;
        static WebApiUrl: string;
    }
}
module SPREST {
    class ListItem {
        public List: List;
        public Collection: ListItemCollection;
        public ResultData: any;
        constructor(List: List, Collection: ListItemCollection, ResultData: any);
    }
}
module SPREST {
    class ListCollection {
        public Context: Context;
        public Web: Web;
        public lists: List[];
        public started: bool;
        public ready: bool;
        public dfd: JQueryDeferred;
        constructor(Context: Context, Web: Web);
        public start(): JQueryDeferred;
        public GetListByFullUrl(listUrl: string): JQueryDeferred;
        public GetListByRelativeUrl(listUrl: string): JQueryDeferred;
        public GetListByTitle(listTitle: string): List;
        public GetListByGuid(listGuid: string): List;
    }
}
module SPREST {
    class Web {
        public Context: Context;
        public Site: Site;
        public Url: string;
        public APIUrl: string;
        public urlFirstUniqueAncestorSecurableObject: string;
        public urlRoleAssignments: string;
        public urlAllProperties: string;
        public urlAssociatedMemberGroup: string;
        public urlAssociatedOwnerGroup: string;
        public urlAssociatedVisitorGroup: string;
        public urlAvailableContentTypes: string;
        public urlAvailableFields: string;
        public urlContentTypes: string;
        public urlCurrentUser: string;
        public urlEventReceivers: string;
        public urlFeatures: string;
        public urlFields: string;
        public urlFolders: string;
        public urlLists: string;
        public urlListTemplates: string;
        public urlNavigation: string;
        public urlParentWeb: string;
        public urlPushNotificationSubscribers: string;
        public urlRecycleBin: string;
        public urlRegionalSettings: string;
        public urlRoleDefinitions: string;
        public urlRootFolder: string;
        public urlSiteGroups: string;
        public urlSiteUserInfoList: string;
        public urlSiteUsers: string;
        public urlThemeInfo: string;
        public urlUserCustomActions: string;
        public urlWebs: string;
        public urlWebInfos: string;
        public urlWorkflowAssociations: string;
        public urlWorkflowTemplates: string;
        public allowRssFeeds: bool;
        public appInstanceId: string;
        public configuration: number;
        public created: string;
        public customMasterUrl: string;
        public description: string;
        public documentLibraryCalloutOfficeWebAppPreviewersDisabled: bool;
        public enableMinimalDownload: bool;
        public id: string;
        public language: number;
        public lastItemModifiedDate: string;
        public masterUrl: string;
        public quickLaunchEnabled: bool;
        public recycleBinEnabled: bool;
        public serverRelativeUrl: string;
        public syndicationEnabled: bool;
        public title: string;
        public treeViewEnabled: bool;
        public uIVersion: number;
        public uIVersionConfigurationEnabled;
        public reportedUrl: string;
        public webTemplate: string;
        public allLists: ListCollection;
        public started: bool;
        public ready: bool;
        public dfd: JQueryDeferred;
        constructor(Context: Context, Site: Site, Url?: string);
        public GetLists(): ListCollection;
        public start(): JQueryDeferred;
        public GetFolderByServerRelativeUrl(url: string): Folder;
    }
}
module SPREST {
    class WebCollection {
        public Context: Context;
        public Site: Site;
        constructor(Context: Context, Site: Site);
        public start(): JQueryDeferred;
        public GetAllWebs(): Web[];
        public GetWebByUrl(): Web;
        public GetWebByTitle(): Web;
    }
}
module SPREST {
    class Util {
        static concatenateUrl(pt1: string, pt2: string): string;
        static getHostOnly(fullUrl: string): string;
    }
}
module SPREST {
    class Site {
        public Context: Context;
        public contextInfoSiteUrl: string;
        public started: bool;
        public ready: bool;
        public dfd: JQueryDeferred;
        public urlEventReceiver: string;
        public urlFeatures: string;
        public urlOwner: string;
        public urlRecycleBin: string;
        public urlRootWeb: string;
        public urlUserCustomActions: string;
        public allowDesigner: bool;
        public allowMasterPageEditing: bool;
        public allowRevertFromTemplate: bool;
        public allowSelfServiceUpgrade: bool;
        public allowSelfServiceUpgradeEvaluation: bool;
        public compatibilityLevel: number;
        public id: string;
        public maxItemsPerThrottledOperation: number;
        public primaryUri: string;
        public readOnly: bool;
        public serverRelativeUrl: string;
        public shareByLinkEnabled: bool;
        public showUrlStructure: bool;
        public uIVersionConfigurationEnabled: bool;
        public upgradeReminderDate: string;
        public upgrading: bool;
        public url: string;
        constructor(Context: Context);
        public GetWebs(): WebCollection;
        public GetWeb(): Web;
        public start(): JQueryDeferred;
    }
}
module SPREST {
    class Context {
        public ContextUrl: string;
        static contexts: Context[];
        static GetContext(contextUrl: string): Context;
        public contextInfoUrl: string;
        public serverVersion: number;
        public contextSiteUrl: string;
        public contextWebUrl: string;
        public RequestDigest: string;
        public ready: bool;
        public started: bool;
        public dfd: JQueryDeferred;
        constructor(ContextUrl: string);
        public siteProp: Site;
        public getSite(): Site;
        public webProp: Web;
        public getWeb(): Web;
        public start(): JQueryDeferred;
    }
}
module SPREST {
    class File {
        public Context: Context;
        public Web: Web;
        public Folder: Folder;
        public files: FileCollection;
        public ResultData: any;
        public checkInComment: string;
        public checkOutType: number;
        public contentTag: string;
        public customizedPageStatus: number;
        public eTag: string;
        public exists: bool;
        public length: number;
        public majorVersion: number;
        public minorVersion: number;
        public name: string;
        public serverRelativeUrl: string;
        public timeCreated: string;
        public timeLastModified: string;
        public title: string;
        public uIVersion: number;
        public uIVersionLabel: number;
        constructor(Context: Context, Web: Web, Folder: Folder, files: FileCollection, ResultData: any);
    }
}
module SPREST {
    class FileCollection {
        public Context: Context;
        public Web: Web;
        public Folder: Folder;
        public APIUrl: string;
        public started: bool;
        public ready: bool;
        public dfd: JQueryDeferred;
        public files: File[];
        constructor(Context: Context, Web: Web, Folder: Folder, APIUrl: string);
        public start(): JQueryDeferred;
    }
}
module SPREST {
    class Folder {
        public Context: Context;
        public Web: Web;
        public apiUrl: string;
        public urlFiles: string;
        public urlListItemAllFields: string;
        public urlParentFolder: string;
        public urlProperties: string;
        public urlFolders: string;
        public itemCount: number;
        public name: string;
        public serverRelativeUrl: string;
        public welcomePage: string;
        public started: bool;
        public ready: bool;
        public dfd: JQueryDeferred;
        constructor(Context: Context, Web: Web, apiUrl: string);
        public start(): JQueryDeferred;
        public getFiles(): FileCollection;
    }
}
module SPREST {
    class ListItemCollection {
        public Context: Context;
        public List: List;
        public QueryUrl: string;
        public started: bool;
        public ready: bool;
        public dfd: JQueryDeferred;
        public items: ListItem[];
        constructor(Context: Context, List: List, QueryUrl: string);
        public start(): JQueryDeferred;
    }
}
module SPREST {
    class ContentTypeCollection {
        public Context: Context;
        public Web: Web;
        public urlApi: string;
        public started: bool;
        public ready: bool;
        public dfd: JQueryDeferred;
        public items: ContentType[];
        constructor(Context: Context, Web: Web, urlApi: string);
        public start(): JQueryDeferred;
    }
}
module SPREST {
    interface QueryCriteria {
        field: string;
        value: any;
        operator: string;
    }
    class List {
        public Context: Context;
        public Web: Web;
        public urlFirstUniqueAncestorSecurableObject: string;
        public urlRoleAssignments: string;
        public urlContentTypes: string;
        public urlDefaultView: string;
        public urlEventReceivers: string;
        public urlFields: string;
        public urlForms: string;
        public urlInformationRightsManagementSettings: string;
        public urlItems: string;
        public urlParentWeb: string;
        public urlRootFolder: string;
        public urlUserCustomActions: string;
        public urlViews: string;
        public urlWorkflowAssociations: string;
        public allowContentTypes: bool;
        public baseTemplate: number;
        public baseType: number;
        public contentTypesEnabled: bool;
        public created: string;
        public defaultContentApprovalWorkflowId: string;
        public description: string;
        public direction: string;
        public documentTemplateUrl: string;
        public draftVersionVisibility: number;
        public enableAttachments: bool;
        public enableFolderCreation: bool;
        public enableMinorVersions: bool;
        public enableModeration: bool;
        public enableVersioning: bool;
        public entityTypeName: string;
        public forceCheckout: bool;
        public hasExternalDataSource: bool;
        public hidden: bool;
        public id: string;
        public imageUrl: string;
        public irmEnabled: bool;
        public irmExpire: bool;
        public irmReject: bool;
        public isApplicationList: bool;
        public isCatalog: bool;
        public isPrivate: bool;
        public itemCount: number;
        public lastItemDeletedDate: string;
        public lastItemModifiedDate: string;
        public listItemEntityTypeFullName: string;
        public multipleDataList: bool;
        public noCrawl: bool;
        public parentWebUrl: string;
        public serverTemplateCanCreateFolders: bool;
        public templateFeatureId: string;
        public title: string;
        constructor(Context: Context, Web: Web, listData);
        public rootFolderProperty: Folder;
        public RootFolder(): Folder;
        public GetAllItems(): ListItemCollection;
        public GetItemsByQuery(queryParameters: QueryCriteria[]): ListItemCollection;
        public GetFullFilterString(criteria: QueryCriteria[]): string;
        public GetFilterString(criteria: QueryCriteria): string;
        public AddItem(item: any): JQueryDeferred;
        public contentTypeProp: ContentTypeCollection;
        public GetContentTypes(): ContentTypeCollection;
    }
}
module SPREST {
    class ContentType {
        public Context: Context;
        public Web: Web;
        public urlFieldLinks: string;
        public urlFields: string;
        public urlParent: string;
        public urlWorkflowAssociations: string;
        public description: string;
        public displayFormTemplateName: string;
        public displayFormUrl: string;
        public documentTemplate: string;
        public documentTemplateUrl: string;
        public editFormTemplateName: string;
        public editFormUrl: string;
        public group: string;
        public hidden: bool;
        public id: string;
        public jSLink: string;
        public name: string;
        public newFormTemplate: string;
        public newFormUrl: string;
        public readOnly: bool;
        public schemaXml: string;
        public scope: string;
        public sealed: bool;
        constructor(Context: Context, Web: Web, resultData: any);
    }
}
